using System;
using System.Collections;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace Admaco.Data
{
    public class Origen : AbstractDataClass
    {
        public const int aplicacion = 1;
        public const int web = 2;

        private Int32 idOrigen;
        private String nombre;

        public Int32 IdOrigen
        {
            get { return idOrigen; }
            set { idOrigen = value; }
        }
        public String Nombre
        {
            get { return nombre; }
            set { nombre = value; }
        }

        /// <summary>
        /// Obtiene un estado a partir de su identificador
        /// </summary>
        /// <param name="id">Identificador de origen</param>
        public override void get(int id)
        {
            try
            {
                ArrayList paramsCollection = new ArrayList();

                SqlParameter sqlParameter;
                sqlParameter = new SqlParameter("@idOrigen", SqlDbType.Int);
                sqlParameter.Value = id;
                paramsCollection.Add(sqlParameter);

                DataTable dt = getDataTable("SELECT * FROM Origen WHERE idOrigen = @idOrigen", paramsCollection);

                if (dt.Rows.Count > 0)
                {
                    DataRow dr = dt.Rows[0];
                    idOrigen = (int)dr["idOrigen"];
                    nombre = ((String)dr["nombre"]).Trim();
                }
            }
            catch (Exception e)
            {
                throw new DataAccessException("Error al obtener objeto estado de la base de datos: " + e);
            }
        }

        /// <summary>
        /// Obtiene una coleccion de los origenes
        /// </summary>
        /// <returns>
        /// ArrayList de origenes
        /// </returns>
        public override ArrayList getAll()
        {
            try
            {
                ArrayList origenes = new ArrayList();

                DataTable dt = getDataTable("SELECT * FROM Origen");

                if (dt.Rows.Count > 0)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        Origen origen = new Origen();
                        origen.idOrigen = (int)dr["idOrigen"];
                        origen.nombre = ((String)dr["nombre"]).Trim();

                        origenes.Add(origen);
                    }
                }

                return origenes;
            }
            catch (Exception e)
            {
                throw new DataAccessException("Error al obtener objetos estado de la base de datos: " + e);
            }
        }

        public SqlDataAdapter getAllSqlDataAdapter()
        {
            try
            {
                SqlDataAdapter dt = getSqlDataAdapter("SELECT * FROM Origen");

                return dt;
            }
            catch (Exception e)
            {
                throw new DataAccessException("Error al obtener objetos analisis de la base de datos: " + e);
            }
        }

        public override void delete()
        {
            throw new Exception("The method or operation is not implemented.");
        }

        public override void save()
        {
            throw new Exception("The method or operation is not implemented.");
        }
    }
}
